关联对象参考 | 您所在的位置:网站首页 › django 多对多模型 › 关联对象参考 |
异步版本: aremove 从相关对象集中删除指定的模型对象: >>> b = Blog.objects.get(id=1) >>> e = Entry.objects.get(id=234) >>> b.entry_set.remove(e) # Disassociates Entry e from Blog b.与 add() 类似,在上面的例子中调用 e.save() 来执行更新。但是,对多对多关系使用 remove(),将使用 QuerySet.delete() 删除关系,这意味着没有调用模型 save() 方法;如果想在删除关系时执行自定义代码,请监听 m2m_changed 信号。 对于多对多关系,remove() 接受模型实例或字段值,通常是主键,作为 *objs 参数。 对于 ForeignKey 对象,只有当 null=True 时,这个方法才存在。如果相关字段不能设置为 None (NULL),那么一个对象就不能从一个关系中删除而不被添加到另一个关系中。在上面的例子中,从 b.entry_set() 中删除 e 相当于做了 e.blog = None,由于 blog ForeignKey` 没有 null=True,所以这是无效的。 对于 ForeignKey 对象,这个方法接受一个 bulk 参数来控制如何执行操作。如果 True (默认),则使用 QuerySet.update()。如果 bulk=False,则调用每个单独模型实例的 save() 方法。这将触发 pre_save 和 post_save 信号,并以牺牲性能为代价。 对于多对多关系,bulk 关键字参数不存在。 Changed in Django 4.2:已添加了 aremove() 方法。 |
CopyRight 2018-2019 实验室设备网 版权所有 |